/**
 * v-hasPermi 操作权限处理
 * Copyright (c) 2019 ruoyi
 */

import useUserStore from '@/store/modules/user'

export default {
  // 指令挂载时的处理逻辑
  mounted(el, binding, vnode) {
    // 获取指令绑定的值
    const { value } = binding
    // 定义全量权限标识
    const all_permission = "*:*:*";
    // 从用户存储中获取当前用户的权限列表
    const permissions = useUserStore().permissions

    // 检查绑定值是否存在且为数组类型，并且长度大于0
    if (value && value instanceof Array && value.length > 0) {
      // 将指令绑定的权限值赋给permissionFlag
      const permissionFlag = value

      // 检查当前用户的权限列表中是否包含全量权限或指令绑定的任意一个权限
      const hasPermissions = permissions.some(permission => {
        return all_permission === permission || permissionFlag.includes(permission)
      })

      // 如果用户没有相应的权限，则移除该DOM元素
      if (!hasPermissions) {
        el.parentNode && el.parentNode.removeChild(el)
      }
    } else {
      // 如果指令绑定的权限值不符合要求，则抛出错误
      throw new Error(`请设置操作权限标签值`)
    }
  }
}